package Client.PokerClient.src;

import java.io.PrintWriter;

import javax.swing.JOptionPane;

/**
 * Klasa przetwarzajaca komunikaty wysylane przez klienta w czasie gry.
 * @author Xsar
 */
public class ClientGTaskController {
  /**
   * Referencja do klasy glowownej programu, client.
   */
  private Client client;
  /**
   * Strumien wyjscia.
   */
  private PrintWriter out;
  /**
   * Ostatni komunikat wyslany przez urzytkownika.
   */
  private String lastTask;

  /**
   * Konstruktor klasy.
   * @param client Referencja do glownego programu. 
   * @param out Referencja do strumienia wyjscia powiazanego z serwerem.
   */
  public ClientGTaskController(Client client, PrintWriter out) {
    this.client=client;
    this.out=out;
  }

  /**
   * Wyslanie komunikatu G_START do servera.
   */
  public void G_START() {
	lastTask="G_START";
    out.println("G_START");
  }
  /**
   * Wyslanie komunikatu G_LEAVE do servera.
   */
  public void G_LEAVE() {
    lastTask="G_LEAVE";
    out.println("G_LEAVE");
  }
  /**
   * Wyslanie komunikatu G_NEW do servera.
   */
  public void G_NEW() {
	lastTask="G_NEW";
    out.println("G_NEW");
  }
  /**
   * Wyslanie komunikatu G_WYMIANA do servera.
   * @param Cards Pozycja kart ktore gracz chce wymienic.
   */
  public void G_WYMIANA(int[] Cards) {
    if(Cards.length<5) {
	  String tmp="G_WYMIANA_"+Cards.length+"_[";
      for(int i=0; i<Cards.length; i++)
        tmp+=Cards[i]+";";
      tmp+="]";
      lastTask=tmp;
      out.println(tmp);
    }
    else {
      G_LEAVE();
      client.getServerWindow().ChangeWindow();
      JOptionPane.showMessageDialog(null, "Blad danych.");
    }
  }
  /**
   * Pobranie ostatniego komunikatu wyslaniego przez klienta.
   * @return Ostatni komunikat.
   */
  public String getLastTask() {
    return lastTask;
  }
}
